home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Controls / Visual Basic Controls.iso / vbcontrol / afsock_1 / afsock~1.exe / Mailer / MailMessage.cls < prev   
Encoding:
Visual Basic class definition  |  1999-01-01  |  6.6 KB  |  228 lines

  1. VERSION 1.0 CLASS
  2. BEGIN
  3.   MultiUse = -1  'True
  4.   Persistable = 0  'NotPersistable
  5.   DataBindingBehavior = 0  'vbNone
  6.   DataSourceBehavior  = 0  'vbNone
  7.   MTSTransactionMode  = 0  'NotAnMTSObject
  8. END
  9. Attribute VB_Name = "MailMessage"
  10. Attribute VB_GlobalNameSpace = False
  11. Attribute VB_Creatable = True
  12. Attribute VB_PredeclaredId = False
  13. Attribute VB_Exposed = True
  14. Attribute VB_Ext_KEY = "SavedWithClassBuilder6" ,"Yes"
  15. Attribute VB_Ext_KEY = "Top_Level" ,"Yes"
  16. Option Explicit
  17.  
  18. Dim AFS As New AFSOCKETLib.Socket
  19.  
  20. Dim mLastError As String
  21.  
  22. 'local variable(s) to hold property value(s)
  23. Private mvarSubject As String 'local copy
  24. Private mvarBody As String 'local copy
  25. Private mvarSent As Date 'local copy
  26. Private mvarReceived As Date 'local copy
  27. 'local variable(s) to hold property value(s)
  28. Private mvarReceivers As Addressees 'local copy
  29. Private mvarSenders As Addressees 'local copy
  30. 'local variable(s) to hold property value(s)
  31. Private mvarMailer As String 'local copy
  32. 'local variable(s) to hold property value(s)
  33. Private mvarMailServer As String 'local copy
  34. Public Property Let MailServer(ByVal vData As String)
  35. 'used when assigning a value to the property, on the left side of an assignment.
  36. 'Syntax: X.MailServer = 5
  37.     mvarMailServer = vData
  38. End Property
  39.  
  40.  
  41. Public Property Get MailServer() As String
  42. 'used when retrieving value of a property, on the right side of an assignment.
  43. 'Syntax: Debug.Print X.MailServer
  44.     MailServer = mvarMailServer
  45. End Property
  46.  
  47.  
  48. Public Property Let Mailer(ByVal vData As String)
  49. 'used when assigning a value to the property, on the left side of an assignment.
  50. 'Syntax: X.Mailer = 5
  51.     mvarMailer = vData
  52. End Property
  53.  
  54. Public Property Get Mailer() As String
  55. 'used when retrieving value of a property, on the right side of an assignment.
  56. 'Syntax: Debug.Print X.Mailer
  57.     Mailer = mvarMailer
  58. End Property
  59.  
  60. Public Sub Clear()
  61.   Set mvarReceivers = New Addressees 'local copy
  62.   Set mvarSenders = New Addressees  'local copy
  63.   mvarSubject = ""
  64.   mvarBody = ""
  65.   mvarSent = Now
  66.   mvarReceived = Now
  67. End Sub
  68.  
  69. Public Property Set Senders(ByVal vData As Addressees)
  70. 'used when assigning an Object to the property, on the left side of a Set statement.
  71. 'Syntax: Set x.Senders = Form1
  72.     Set mvarSenders = vData
  73. End Property
  74.  
  75. Public Property Get Senders() As Addressees
  76. 'used when retrieving value of a property, on the right side of an assignment.
  77. 'Syntax: Debug.Print X.Senders
  78.     Set Senders = mvarSenders
  79. End Property
  80.  
  81. Public Property Set Receivers(ByVal vData As Addressees)
  82. 'used when assigning an Object to the property, on the left side of a Set statement.
  83. 'Syntax: Set x.Receivers = Form1
  84.     Set mvarReceivers = vData
  85. End Property
  86.  
  87. Public Property Get Receivers() As Addressees
  88. 'used when retrieving value of a property, on the right side of an assignment.
  89. 'Syntax: Debug.Print X.Receivers
  90.     Set Receivers = mvarReceivers
  91. End Property
  92.  
  93.  
  94. Public Function Submit() As Boolean
  95.   
  96. On Error GoTo exitSubmit
  97.  
  98.   If Not Connect(mvarMailServer) Then
  99.     mLastError = "mail server not found. e# " & AFS.LastError
  100.     Exit Function
  101.   End If
  102.   WaitResponse "220"
  103.   SendCommand "HELO"
  104.   WaitResponse "250"
  105.   SendCommand "MAIL FROM:" & mvarSenders.Item(1).EMail
  106.   WaitResponse "250"
  107.   
  108.   Dim A As Addressee
  109.   For Each A In mvarReceivers
  110.     SendCommand "RCPT TO:" & A.EMail
  111.     WaitResponse "250"
  112.   Next
  113.   SendCommand "DATA"
  114.   WaitResponse "354"
  115.   
  116.   SendCommand "From: """ & mvarSenders.Item(1).Person & """ <" & mvarSenders.Item(1).EMail & ">"
  117.   For Each A In mvarReceivers
  118.     SendCommand "To: """ & A.Person & """ <" & A.EMail & ">"
  119.   Next
  120.   SendCommand "Subject:" & mvarSubject
  121.   SendCommand "Date: " & Format$(mvarSent, "ddd, dd mmm yyyy h:mm:ss") & "+0300"
  122.   SendCommand "MIME-Version: 1.0"
  123.   SendCommand "Content-Type: text/plain; Charset = ""Windows-1252"""
  124.   SendCommand "Content-Transfer-Encoding: 8bit"
  125.   SendCommand "X-Priority: 3"
  126.   SendCommand "X-Mailer: " & mvarMailer
  127.   SendCommand ""
  128.   SendCommand mvarBody
  129.   SendCommand ""
  130.   SendCommand "."
  131.   'WaitResponse "250"
  132.   'SendCommand "QUIT"
  133.   WaitResponse "250"
  134.   Submit = True
  135. exitSubmit:
  136.   mLastError = Err.Description
  137.   Exit Function
  138. End Function
  139.  
  140. Public Property Let Received(ByVal vData As Date)
  141. 'used when assigning a value to the property, on the left side of an assignment.
  142. 'Syntax: X.Received = 5
  143.     mvarReceived = vData
  144. End Property
  145.  
  146. Public Property Get Received() As Date
  147. 'used when retrieving value of a property, on the right side of an assignment.
  148. 'Syntax: Debug.Print X.Received
  149.     Received = mvarReceived
  150. End Property
  151.  
  152. Public Property Let Sent(ByVal vData As Date)
  153. 'used when assigning a value to the property, on the left side of an assignment.
  154. 'Syntax: X.Sent = 5
  155.     mvarSent = vData
  156. End Property
  157.  
  158. Public Property Get Sent() As Date
  159. 'used when retrieving value of a property, on the right side of an assignment.
  160. 'Syntax: Debug.Print X.Sent
  161.     Sent = mvarSent
  162. End Property
  163.  
  164. Public Property Let Body(ByVal vData As String)
  165. 'used when assigning a value to the property, on the left side of an assignment.
  166. 'Syntax: X.Body = 5
  167.     mvarBody = vData
  168. End Property
  169.  
  170. Public Property Get Body() As String
  171. Attribute Body.VB_UserMemId = 0
  172. 'used when retrieving value of a property, on the right side of an assignment.
  173. 'Syntax: Debug.Print X.Body
  174.     Body = mvarBody
  175. End Property
  176.  
  177. Public Property Let Subject(ByVal vData As String)
  178. 'used when assigning a value to the property, on the left side of an assignment.
  179. 'Syntax: X.Subject = 5
  180.     mvarSubject = vData
  181. End Property
  182.  
  183.  
  184. Public Property Get Subject() As String
  185. 'used when retrieving value of a property, on the right side of an assignment.
  186. 'Syntax: Debug.Print X.Subject
  187.     Subject = mvarSubject
  188. End Property
  189.  
  190. Private Sub Class_Initialize()
  191.   Set mvarReceivers = New Addressees 'local copy
  192.   Set mvarSenders = New Addressees  'local copy
  193. End Sub
  194.  
  195. Private Function Connect(ByVal MailServer$)
  196.   Connect = AFS.Connect(MailServer, 25)
  197. End Function
  198.  
  199. Public Sub SendCommand(S As String)
  200.   AFS.Send S & vbCrLf
  201. End Sub
  202.  
  203. Public Sub WaitResponse(ByVal Resp$, Optional ByVal BadResp$)
  204.   Dim InputData$
  205.   InputData = AFS.Receive(10000)
  206.   If InputData <> "" Then
  207.     If Len(BadResp) <> 0 Then
  208.        If InStr(1, InputData, BadResp) <> 0 Then GoTo BadExit
  209.     End If
  210.     If InStr(1, InputData, Resp) <> 0 Then GoTo NormalExit
  211.   Else
  212.     Err.Raise 20000, "WaitResponse", "Timeout"
  213.   End If
  214.   Exit Sub
  215. NormalExit:
  216.   'Debug.Print InputData
  217.   Exit Sub
  218. BadExit:
  219.   Err.Raise 20000, "WaitResponse", BadResp
  220.   Exit Sub
  221. End Sub
  222.  
  223.  
  224. Public Property Get LastError() As String
  225.   LastError = mLastError
  226. End Property
  227.  
  228.